package com.pangu.ui.browser;

import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.util.AttributeSet;
import android.widget.AdapterView;
import android.widget.GridView;

import com.pangu.AMApplication;
import com.pangu.ui.R;
import com.pangu.ui.widget.GridViewWithHeaderAndFooter;

/**
 * 主要是内套了一个GridView的列表视图
 * <p/>
 * Created by cxlin
 */

public abstract class GridItemBrowser<A extends AMApplication> extends LoadableList<A> {

	protected int gridColumn;

	public GridItemBrowser(Context context) {
		super(context);
	}

	public GridItemBrowser(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	/**
	 * 更新不同布局的列数
	 * 
	 * @param column
	 */
	public void updateColumn(int column) {
		changeGridColumn(column);
	}

	/**
	 * 网格列数改变的方法 不区分横竖屏幕，以当前计算出需要多少格子从新排列，延时加载
	 * 
	 * @param column
	 */
	private void changeGridColumn(int column) {
		if (adapterView == null) {
			return;
		}

		GridView gridView = (GridView) adapterView;
		gridView.setNumColumns(column);
		gridColumn = column;

		notifyDataSetChangedDelay();
	}

	@Override
	protected AdapterView createAdapterView() {
		GridViewWithHeaderAndFooter gridView = new GridViewWithHeaderAndFooter(getContext());
		setListViewParameter(gridView);

		addGridViewHeader(gridView);
		return gridView;
	}

	/**
	 * 添加gridView的头部标题
	 * 
	 * @param gridView
	 */
	protected void addGridViewHeader(GridView gridView) {
		// 空实现，子类要头部自己复盖。
	}

	/**
	 * 设置默认的GridView的风格和参数，子类不要将其重新实现
	 * 
	 * @param gridView
	 */
	protected void setListViewParameter(GridView gridView) {
		// 列表设为透明背景(这是里不设背景，子类去设)
		gridView.setVerticalFadingEdgeEnabled(true);
		// 列表缓存色为透明色
		gridView.setCacheColorHint(getResources().getColor(R.color.mui__transparent));
		// 将列表的selector设置为透明，状态由子项自己设置
		gridView.setSelector(new ColorDrawable(getResources().getColor(R.color.mui__transparent)));
	}

}
